package co.gov.medellin.ssti.sub.model.service;

import java.util.Collection;
import java.util.List;

import co.gov.medellin.ssti.sub.common.util.Atributo;
import co.gov.medellin.ssti.sub.model.dao.exception.DAOException;
import co.gov.medellin.ssti.sub.model.vo.AreaVO;
import co.gov.medellin.ssti.sub.model.vo.ProgramaVO;
import co.gov.medellin.ssti.sub.model.vo.SedeVO;
import co.gov.medellin.ssti.sub.model.vo.SubprogramaVO;
import co.gov.medellin.ssti.sub.model.vo.ValorFlexibleVO;
import co.gov.medellin.ssti.sub.model.vo.VflexVO;
import co.gov.medellin.ssti.sub.paoyer.administration.model.vo.UserVO;

public interface ConsultasService {
	/**
	 * 
	 * @param strCodigo
	 * @return
	 * @throws DAOException
	 */
	Collection<ProgramaVO> findDetPrograma(String strCodigo)
			throws DAOException;

	/**
	 * 
	 * @param strSubpgr
	 * @return
	 * @throws DAOException
	 */
	Collection<SubprogramaVO> findDetSubpgr(String strSubpgr)
			throws DAOException;

	/**
	 * 
	 * @param strSede
	 * @return
	 * @throws DAOException
	 */
	Collection<SedeVO> findDetSede(String strSede) throws DAOException;

	/**
	 * 
	 * @param codeUser
	 * @param groupUserName
	 * @param areaUser
	 * @return
	 * @throws DAOException
	 */
	Collection<ProgramaVO> findNamePrograma(Long codeUser,
			String groupUserName, Long areaUser) throws DAOException;

	/**
	 * 
	 * @param strCodSecret
	 * @return
	 * @throws DAOException
	 */
	Collection<AreaVO> findNomSubsecretaria(String strCodSecret)
			throws DAOException;

	/**
	 * 
	 * @param strUsu
	 * @return
	 * @throws DAOException
	 */
	Collection<UserVO> findUsuAdmin(String strUsu) throws DAOException;

	/**
	 * 
	 * @return
	 * @throws DAOException
	 */
	Collection<VflexVO> findMunicipios() throws DAOException;

	/**
	 * 
	 * @param param
	 * @return
	 * @throws DAOException
	 */
	int activarSub2(String[] param) throws DAOException;

	/**
	 * 
	 * @param param
	 * @return
	 * @throws DAOException
	 */
	int activarPro2(String[] param) throws DAOException;

	/**
	 * 
	 * @param strcodpro
	 * @return
	 * @throws DAOException
	 */
	Collection<String> findNomPrg(String strcodpro) throws DAOException;

	/**
	 * 
	 * @param strsubprog
	 * @return
	 * @throws DAOException
	 */
	Collection<SubprogramaVO> findInfoAct(String strsubprog)
			throws DAOException;

	/**
	 * 
	 * @param strsubprg
	 * @return
	 * @throws DAOException
	 */
	boolean valProgActivo(String strsubprg) throws DAOException;

	/**
	 * 
	 * @param strSubprog
	 * @return
	 * @throws DAOException
	 */
	Collection<SubprogramaVO> findInfoAct2(String strSubprog)
			throws DAOException;

	/**
	 * 
	 * @param strCod
	 * @return
	 * @throws DAOException
	 */
	String nombre(String strCod) throws DAOException;

	/**
	 * 
	 * @param strCod
	 * @return
	 * @throws DAOException
	 */
	int findCodAtriEspe(String strCod) throws DAOException;

	/**
	 * 
	 * @param strCod
	 * @return
	 * @throws DAOException
	 */
	int findListaGeneral(String strCod) throws DAOException;

	/**
	 * 
	 * @param codsub
	 * @return
	 * @throws DAOException
	 */
	Collection<Atributo> findAtributoGenerico(String codsub)
			throws DAOException;

	/**
	 * 
	 * @param strSubprograma
	 * @param opcion
	 * @return
	 * @throws DAOException
	 */
	Collection<Atributo> findAtributoEspecificos(String strSubprograma,
			int opcion) throws DAOException;

	/**
	 * 
	 * @param tipoVfl
	 * @return
	 * @throws DAOException
	 */
	Collection<ValorFlexibleVO> findDominio(String tipoVfl) throws DAOException;

	/**
	 * 
	 * @param tipoVfl
	 * @param nombre
	 * @return
	 * @throws DAOException
	 */
	Collection<ValorFlexibleVO> findDominioByCritera(String tipoVfl,
			String nombre) throws DAOException;

	/**
	 * 
	 * @param codigo
	 * @return
	 * @throws DAOException
	 */
	Collection<String> findTvflAtri(String codigo) throws DAOException;

	/**
	 * 
	 * @param lNombre
	 * @param strSubprograma
	 * @return
	 * @throws DAOException
	 */
	Collection<Atributo> findAtriValidarLista(List<String> lNombre,
			String strSubprograma) throws DAOException;

	/**
	 * 
	 * @param lNombre
	 * @param strSubprograma
	 * @return
	 * @throws DAOException
	 */
	Collection<Atributo> findAtriValidarLista2(List<String> lNombre,
			String strSubprograma) throws DAOException;

	/**
	 * 
	 * @param strArr
	 * @param strSubprograma
	 * @return
	 * @throws DAOException
	 */
	int insertAtributo(String[] strArr, String strSubprograma)
			throws DAOException;

	/**
	 * 
	 * @param strArrAG
	 * @param strSubprograma
	 * @return
	 * @throws DAOException
	 */
	int insertAtributo2(String[] strArrAG, String strSubprograma)
			throws DAOException;

	/**
	 * 
	 * @param strCodigo
	 * @param strSubprograma
	 * @param strArr2
	 * @return
	 * @throws DAOException
	 */
	int insertAtributoGenerico(String strCodigo, String strSubprograma,
			String[] strArr2) throws DAOException;

	/**
	 * 
	 * @param strArr
	 * @return
	 * @throws DAOException
	 */
	int insertTipoVFL(String[] strArr) throws DAOException;

	/**
	 * 
	 * @param strArr
	 * @return
	 * @throws DAOException
	 */
	int insertAtributoGene(String[] strArr) throws DAOException;

	/**
	 * 
	 * @param strArr
	 * @param codigo
	 * @return
	 * @throws DAOException
	 */
	int insertValorVFL(String[] strArr, int codigo) throws DAOException;

	/**
	 * 
	 * @return
	 * @throws DAOException
	 */
	int findCodigoTipoVFL() throws DAOException;

	/**
	 * 
	 * @return
	 * @throws DAOException
	 */
	int findOrdenAtriGene() throws DAOException;

	/**
	 * 
	 * @return
	 * @throws DAOException
	 */
	Collection<String> findCodMaxAtriGene() throws DAOException;

	/**
	 * 
	 * @param orden
	 * @param subprograma
	 * @param vigencia
	 * @return
	 * @throws DAOException
	 */
	int findOrden(String orden, String subprograma, String vigencia)
			throws DAOException;

	/**
	 * 
	 * @param orden
	 * @param subprograma
	 * @return
	 * @throws DAOException
	 */
	int findOrden(String orden, String subprograma) throws DAOException;

	/**
	 * 
	 * @param nombre
	 * @param subprograma
	 * @param vigencia
	 * @return
	 * @throws DAOException
	 */
	int findNombre(String nombre, String subprograma, String vigencia)
			throws DAOException;

	/**
	 * 
	 * @param nombre
	 * @param subprograma
	 * @return
	 * @throws DAOException
	 */
	int findNombre(String nombre, String subprograma) throws DAOException;

	/**
	 * 
	 * @param strCodigoAtri
	 * @param iCodigo
	 * @param strArrAct
	 * @return
	 * @throws DAOException
	 */
	int actualizarAtributo(String strCodigoAtri, int iCodigo, String[] strArrAct)
			throws DAOException;

	/**
	 * 
	 * @param iCodigoAtri
	 * @param iCodigo
	 * @param strArrAct
	 * @return
	 * @throws DAOException
	 */
	int actualizarAtributoGene(int iCodigoAtri, int iCodigo, String[] strArrAct)
			throws DAOException;

	/**
	 * 
	 * @param iCodAtriEsp
	 * @param iCodAtriGene
	 * @return
	 * @throws DAOException
	 */
	int actualizarCampoUno(int iCodAtriEsp, int iCodAtriGene)
			throws DAOException;

	/**
	 * 
	 * @param strCodigoAtri
	 * @param strCodigoVFL
	 * @param strArrAct
	 * @return
	 * @throws DAOException
	 */
	int actualizarValorSug(String strCodigoAtri, String strCodigoVFL,
			String[] strArrAct) throws DAOException;

	/**
	 * 
	 * @param CodigoAtriGe
	 * @param strCodigoVFL
	 * @return
	 * @throws DAOException
	 */
	int actualizarValorSugGene(int CodigoAtriGe, String strCodigoVFL)
			throws DAOException;

	/**
	 * 
	 * @param strCodigoAtri
	 * @param strArrAct
	 * @return
	 * @throws DAOException
	 */
	int eliminarAtri(String strCodigoAtri, String[] strArrAct)
			throws DAOException;

	/**
	 * 
	 * @param atri
	 * @param strArrAct
	 * @return
	 * @throws DAOException
	 */
	int modificarAtriSub(Atributo atri, String[] strArrAct) throws DAOException;

	/**
	 * 
	 * @param atri
	 * @return
	 * @throws DAOException
	 */
	int actualizarTvfDominio(String atri) throws DAOException;

	/**
	 * 
	 * @param strArr
	 * @param codigo
	 * @return
	 * @throws DAOException
	 */
	int actualizarDominio(String[] strArr, String codigo) throws DAOException;

	/**
	 * 
	 * @param strArr
	 * @param codigo
	 * @return
	 * @throws DAOException
	 */
	int actualizarValorFlexible(String[] strArr, String codigo)
			throws DAOException;

	/**
	 * 
	 * @param codigo
	 * @return
	 * @throws DAOException
	 */
	int eliminarVFL(String codigo) throws DAOException;

	/**
	 * 
	 * @param codigo
	 * @return
	 * @throws DAOException
	 */
	int eliminarVFLTotal(String codigo) throws DAOException;
}
